<?php
/**
 * APC(Alternative PHP Cache)封装类
 *
 * @version $Id: IAPC.php 316 2008-05-04 10:50:39Z iwind $
 * @package util.apc
 */
class IAPC extends IObject {
	/**
	 * [已经过时]判断是否开启了apc.enabled选项
	 *
	 * @return boolean
	 * @deprecated 已经过期，请使用isEnabled代替
	 */
	public static function isEnabed() {
		return ini_get("apc.enabled");
	}
	
	/**
	 * 判断是否开启了apc.enabled选项
	 * 
	 * 用来取代 isEnabed
	 *
	 * @return boolean
	 * @since 0.2.1
	 */
	public static function isEnabled() {
		return (bool)ini_get("apc.enabled");
	}
	
	/**
	 * 存入变量
	 *
	 * @param string $key 键
	 * @param mixed $var 变量
	 * @param int $ttl 生存时间(Time To Live)
	 * @return boolean
	 */
	public static function put($key, $var, $ttl = null) {
		if (self::isEnabled()) {
			return apc_store($key, $var, $ttl);
		}
		return false;
	}
	
	/**
	 * 取得一个键对应的值
	 *
	 * @param string $key 键
	 * @return mixed
	 */
	public static function get($key) {
		if (self::isEnabled()) {
			return apc_fetch($key);
		}
		return null;
	}
	
	/**
	 * 删除APC中键对应的缓存
	 *
	 * @param string $key
	 * @return boolean
	 */
	public static function remove($key) {
		if (self::isEnabled()) {
			return apc_delete($key);
		}
		return true;
	}
	
	/**
	 * 清除所有cache
	 *
	 * @param string $type cache类型
	 * @return boolean
	 */
	public static function clear($type = null) {
		if (self::isEnabled()) {
			return apc_clear_cache($type);
		}
		return true;
	}
	
	/**
	 * 取得已经存储的信息
	 *
	 * @param string 如果为"user"则返回用户定义的cache，否则则返回系统定义的cache
	 * @param boolean 如果为true，则排除单个的cache
	 * @return array
	 */
	public static function getInfo($type = null, $limit = null) {
		if (self::isEnabled()) {
			return apc_cache_info($type, $limit);
		}
		return array();
	}
}

?>